package com.skt.common_hr.common
{
	import com.skt.common_hr.common.components.CommonAlert;
	import com.skt.common_hr.main.events.SelMenuEvent;
	import com.skt.common_hr.main.model.vo.AuthorityVO;
	import com.skt.common_hr.main.view.components.ContentBase;
	import com.skt.common_hr.main.view.components.MenuBar2;
	import com.wcl.utils.StringUtil;
	
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.utils.Dictionary;
	
	import mx.containers.ViewStack;
	
	import org.puremvc.as3.multicore.patterns.facade.Facade;
	
	public class AppModuleManager extends EventDispatcher
	{
		private var _baseUI:ViewStack;
		private var moduleMap:Dictionary = new Dictionary();
		
		public static const ERROR_LOAD_MODULE:String = "errorLoadModule";
		
		// 각 Module Keys
		public static const MODULE_KEY_MAIN:String				= "HRMAIN";
		public static const MODULE_KEY_MYPROFILE:String			= "MYPROFILE";
		public static const MODULE_KEY_CONPENSATION:String		= "COMPENSATION";
		public static const MODULE_KEY_YEARADJUSTMENT:String	= "YEARADJUSTMENT";
		public static const MODULE_KEY_WORK:String				= "WORK";
		public static const MODULE_KEY_BIZTRIP:String			= "BIZTRIP";
		
		// 20150513 이동발령관리 정상아
		public static const MODULE_KET_APPMSNREQ:String			= "APPMSNREQ";
		
		public static const MODULE_KEY_TRAINING:String			= "TRAINING";
		public static const MODULE_KEY_OVERTIME:String			= "OVERTIME_ORG";
		public static const MODULE_KEY_WELFARE:String			= "WELFARE";
		public static const MODULE_KEY_CONGMONEY:String			= "CONGMONEY";
		// 2011.3.9 추가 by Shin
		public static const MODULE_KEY_CONGMONEY2:String		= "CONGMONEY2";
		
		// 2011.3.23 의료비
		public static const MODULE_KEY_MEDICALMONEY:String		= "MEDICALMONEY";
		
		public static const MODULE_KEY_CERTIFICATE:String		= "CERTIFICATE";
		public static const MODULE_KEY_HEALTHCHKREQ:String			= "HEALTHCHKREQ";
		
		//2015.03.10 건강검진 예약 ACE용 메뉴
		//public static const MODULE_KEY_HEALTHCHKREQ_SAC:String		= "HEALTHCHKREQ_SAC";
		
		public static const MODULE_KEY_DEXPENSE:String			= "DEXPENSE";
		public static const MODULE_KEY_NOTICE:String			= "NOTICE";
		public static const MODULE_KEY_TEAMPROFILE:String		= "TEAMPROFILE";
		public static const MODULE_KEY_TEAMWORKTIME:String		= "TEAMWORKTIME";
		public static const MODULE_KEY_CONTRACT:String			= "CONTRACT";
		public static const MODULE_KEY_SEARCH:String			= "HRSEARCH";
		public static const MODULE_KEY_APPROVAL:String			= "APPROVAL";
		
		//건강보험증 
		public static const MODULE_KEY_HTHIC:String				= "HTHIC";

		// 사전근무신청
		public static const MODULE_KEY_HOLOTREQ:String			= "HOLOTREQ";				
		// 사전근무지시
		public static const MODULE_KEY_HOLOTORD:String			= "HOLOTORD";				
		
		// 사전근무지시 상아 테스트 
		//public static const MODULE_KEY_HOLCOMMNOSSA:String		= "HOLCOMMNOSSA";		//////////////////////////////////////////////////
		
		// 사전근무신청NOS
		public static const MODULE_KEY_HOLOTREQNOS:String		= "HOLOTREQNOS";				
		// 사전근무지시NOS
		public static const MODULE_KEY_HOLOTORDNOS:String		= "HOLOTORDNOS";		

		// 학자금
		public static const MODULE_KEY_SCHOOLEXP:String			= "SCHOOLEXP";		

		// 건강보험 연말정산 
		public static const MODULE_KEY_MEDICINE:String			= "MEDICINE";		

		// 건강보험 연말정산 
		public static const MODULE_KEY_BIZTRIP2:String			= "BIZTRIP2";		
		
		// 평가결과
		public static const MODULE_KEY_APPESS:String			= "APPESS";
		
		// 구성원 평가결과
		public static const MODULE_KEY_APPMSS:String			= "APPMSS";		
		
		// 급여/복리후생계좌
		public static const MODULE_KEY_BANKREQ:String			= "BANKREQ";		

		// 양식함
		public static const MODULE_KEY_FORMCON:String			= "FORMCON";		
		
		// 전사 인사발령 공지  
		public static const MODULE_KEY_ALLAPP:String			= "ALLAPP";		

		// 구성원 포상
		public static const MODULE_KEY_MSSAWARD:String			= "MSSAWARD";		
		
		// 경조사 공지사항
		public static const MODULE_KEY_CONGCON:String			= "CONGCON";		
		
		// 재택근무
		public static const MODULE_KEY_HOMEWORK:String			= "HOMEWORK";		
		
		// 중간정산 결과조회
		public static const MODULE_KEY_RETIREMENT:String		= "RETIREMENT";		
		
		// 경조휴가
		public static const MODULE_KEY_CONGREST:String			= "CONGREST";		
		
		// Top Bank
		public static const MODULE_KEY_ESSTOP:String			= "ESSTOP";
		
		// 구성원 Top Bank
		public static const MODULE_KEY_MSSTOP:String			= "MSSTOP";				
		
		// 급여 공지사항
		public static const MODULE_KEY_PAYCON:String			= "PAYCON";
		
		// 근로계약서/입사서류 2012.3.8 j.t 추가
		public static const MODULE_KEY_EMPCONT:String			= "EMPCONT";
		 
		// 근로계약/동의서 2012.3.26 j.t 추가
		public static const MODULE_KEY_EMPCONTOP:String			= "EMPCONTOP";	
		
		// 근로계약/동의서 2012.4.05 j.t 추가
		public static const MODULE_KEY_EMPCONTNOS:String		= "EMPCONTNOS";
		
		// 복리후생제도 안내 2012.7.03 j.t 추가
		public static const MODULE_KEY_BEGUIDE:String		= "BEGUIDE";
		
		// 휴양소 지원금 2012.8.29 j.t 추가
		public static const MODULE_KEY_RESUPPORT:String		= "RESUPPORT"; 
		
		// PACDP 2012.9.19 j.t 추가
		public static const MODULE_KEY_PACDP:String		= "PACDP";
		
		// INREC 2012.10.30 j.t 추가
		public static const MODULE_KEY_INREC:String		= "INREC";
		
		// REGUIDE 2013.03.13 j.t 추가
		public static const MODULE_KEY_REGUIDE:String		= "REGUIDE";
		
		// ETHICS 2013.03.27 j.t 추가
		public static const MODULE_KEY_ETHICS:String		= "ETHICS"; 
		
		// MINTVIEW 2013.05.13 j.t 추가
		public static const MODULE_KEY_MINTVIEW:String		= "MINTVIEW"; 
		
		// CONDOREQ 2013.05.29 j.t 추가
		public static const MODULE_KEY_CONDOREQ:String		= "CONDOREQ";
		
		// SKBCOMM 2013.05.31 j.t 추가
		public static const MODULE_KEY_SKBCOMM:String		= "SKBCOMM";
		
		// SEPCOST 2013.06.03 j.t 추가
		public static const MODULE_KEY_SEPCOST:String		= "SEPCOST";
		
		// NAMETAG 2013.08.07 j.t 추가
		public static const MODULE_KEY_NAMETAG:String		= "NAMETAG";
		
		// NAMETAG 2014.03.07 
		public static const MODULE_KEY_HRLETTER:String		= "HRLETTER";		
		 
		// NAMETAG 2014.04.07 
		public static const MODULE_KEY_HEALTHREQ:String		= "HEALTHREQ";

		// NAMETAG 2014.06.12 
		public static const MODULE_KEY_TEAMWORKSUM:String		= "TEAMWORKSUM";
		
		//  2014.06.12 연차일수 통지 및 사용계획서
		public static const MODULE_KEY_ALNOTICE:String		= "ALNOTICE"; 
		
		//  2014.07.30 행복 미래상 만들기  sac
		public static const MODULE_KEY_FUDRAW:String		= "FUDRAW";		
		
		//  2014.10.1 모성보호  stc
		public static const MODULE_KEY_MOMPO:String		= "MOMPO";		
		
		//  2014.10.1 임신부 및 육아복지관련 신청 sAc
		public static const MODULE_KEY_BABYBT:String		= "BABYBT";		
		
		//  2014.11.21 사전근무지시 NOS
		public static const MODULE_KEY_HOLCOMMNOS:String		= "HOLCOMMNOS";		
		
		// 20141221 신주소 				
		public static const MODULE_KEY_POSTPOPUP:String			= "POSTPOPUP";
								
		public static var modules:Array = [
		
				/* @@@@@@@@@@@@@@@@@@@@@@@@@   1번째 Menu   @@@@@@@@@@@@@@@@@@@@@@@@@ */
				[MODULE_KEY_MAIN, 			"Home", 			"HrMain" ],					// Main Module
				[MODULE_KEY_MYPROFILE, 		"MyProfile", 		"MyProfile"],		// 본인 인사기록 조회
				[MODULE_KEY_CONPENSATION, 	"급여정보", 			"Compensation"],	// 급여관리
				[MODULE_KEY_RETIREMENT, 	"중간정산 결과조회", 	"Retirement"],		//
				[MODULE_KEY_YEARADJUSTMENT, "연말정산", 			"YearAdjustment"],	// 연말정산
				[MODULE_KEY_MEDICINE, 		"건강보험 연말정산", 	"Medicine"],		// 
				[MODULE_KEY_APPESS, 		"평가결과", 			"Appess"],			//				
				[MODULE_KEY_EMPCONT, 		"근로계약서/입사서류",	"Empcont"],       	// 근로계약서/입사서류 2012.3.8 j.t 추가
				[MODULE_KEY_EMPCONTOP, 		"근로계약/동의서",	"EmpcontOp"],		//근로계약/동의서 2012.3.26 j.t 추가
				[MODULE_KEY_EMPCONTNOS, 	"근로계약/동의서",	"EmpcontNos"],		//근로계약/동의서 2012.3.26 j.t 추가
				[MODULE_KEY_ETHICS, 		"ETHICS",			"Ethics"],			//윤리경영실천서약서  2013.03.27 j.t 추가
				[MODULE_KEY_ALNOTICE,	 	"ALNOTICE",		"Alnotice"],				//연차일수 통지 및 사용계획서		
				/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
				
				
				/* @@@@@@@@@@@@@@@@@@@@@@@@@   2번째 Menu   @@@@@@@@@@@@@@@@@@@@@@@@@ */
				[MODULE_KEY_BIZTRIP, 		"출장", 				"BizTrip"],			// 출장
				[MODULE_KET_APPMSNREQ,		"이동발령관리",		"Appmsnreq"],		// 이동발령관리 stc 정상아
 				[MODULE_KEY_WORK, 			"근무", 				"Work"], 			// 근태
				[MODULE_KEY_TRAINING, 		"교육", 				"Training"],		// 교육
				[MODULE_KEY_HOLOTREQ, 		"사전근무신청", 		"HolOtReq"],		// 
				[MODULE_KEY_HOLOTORD, 		"사전근무지시", 		"HolOtOrd"],		//
				
				 
				
				[MODULE_KEY_HOLOTREQNOS,	"사전근무신청", 		"HolOtReqNos"],		// 
				[MODULE_KEY_HOLOTORDNOS,	"사전근무승인", 		"HolOtOrdNos"],		// 												 								
				[MODULE_KEY_BIZTRIP2, 		"구성원 출장", 		"Biztrip2"],		//
				[MODULE_KEY_MSSAWARD, 		"구성원 포상", 		"Mssaward"],		//				
				[MODULE_KEY_HOMEWORK, 		"재택출근", 			"Homework"],		//
				[MODULE_KEY_PACDP, 			"PACDP",			"Pacdp"],			//PACDP  2012.9.19 j.t 추가
				[MODULE_KEY_REGUIDE, 		"REGUIDE",			"Reguide"],			//휴가/휴직제도 안내  2013.03.13 j.t 추가
				[MODULE_KEY_FUDRAW, 		"FUDRAW",			"Fudraw"],			// 행복 미래상 만들기 sac
				[MODULE_KEY_MOMPO, 			"MOMPO",			"Mompo"],			// 모성보호 stc
				[MODULE_KEY_BABYBT, 		"BABYBT",			"Babybt"],			// 모성보호 stc
				[MODULE_KEY_HOLCOMMNOS, 	"HOLCOMMNOS",		"Holcommnos"],		// 사전근무지시 20141121
				
				//[MODULE_KEY_HOLCOMMNOSSA,	"사전근무지시상아", 	"HolcommnosSA"],		// 정상아
				/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
				
				
				/* @@@@@@@@@@@@@@@@@@@@@@@@@   3번째 Menu   @@@@@@@@@@@@@@@@@@@@@@@@@ */
				[MODULE_KEY_OVERTIME, 		"상담원 근무관리", 		"Overtime"],		// 상담원 OT관리
				[MODULE_KEY_CONGMONEY, 		"경조금", 				"CongMoney"],		// 경조금
				[MODULE_KEY_CONGCON, 		"공지사항", 				"Congcon"],			// 경조금 공지사항
				[MODULE_KEY_WELFARE, 		"선택적 복리후생",			"Welfare"],			// 복리후생
				[MODULE_KEY_CERTIFICATE, 	"제증명신청", 			"Certificate"],		// 제증명 
				[MODULE_KEY_HEALTHCHKREQ, 	"건강검진", 				"Healthchkreq"],	// 건강검진				
				[MODULE_KEY_DEXPENSE, 		"석식비", 				"DExpense"],		// 석식비
				[MODULE_KEY_HTHIC, 			"건강보험증", 			"HthIc"],			// 건강보험증
				[MODULE_KEY_CONGMONEY2, 	"경조사 진행 확인",		"CongMoney2"],		// 경조금 nos만
				[MODULE_KEY_MEDICALMONEY, 	"의료비",				"MedicalMoney"],	// 의료비
				[MODULE_KEY_SCHOOLEXP, 		"학자금",				"SchoolExp"],		// 
				[MODULE_KEY_BANKREQ, 		"급여/복리후생 계좌",		"Bankreq"],			//
				[MODULE_KEY_CONGREST, 		"경조휴가",				"Congrest"],		//		  
				[MODULE_KEY_ESSTOP, 		"TopBank",				"Esstop"],			//
				[MODULE_KEY_MSSTOP, 		"구성원 TopBank",			"Msstop"],			//
				[MODULE_KEY_NAMETAG, 		"명함신청",				"Nametag"],			//
				[MODULE_KEY_BEGUIDE, 		"복리후생제도 안내",		"Beguide"],			//복리후생제도 안내  2012.7.3 j.t 추가
				[MODULE_KEY_RESUPPORT, 		"휴양소 지원금",			"Resupport"],		//휴양소 지원금  2012.8.29 j.t 추가
				[MODULE_KEY_CONDOREQ, 		"콘도신청",				"Condoreq"],		//콘도신청 2013.05.29 j.t 추가
				[MODULE_KEY_SKBCOMM, 		"SKB통신비 신청",			"Skbcomm"],			//SKB통신비 신청 2013.05.31 j.t 추가
				[MODULE_KEY_SEPCOST, 		"분리과금 추가지원 신청",	"Sepcost"],			//분리과금 추가지원 신청 2013.05.31 j.t 추가
				[MODULE_KEY_HEALTHREQ, 	"건강검진 예약",				"Healthreq"],			//건강검진 예약 				
				
				
				/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
				
				
				/* @@@@@@@@@@@@@@@@@@@@@@@@@   4번째 Menu   @@@@@@@@@@@@@@@@@@@@@@@@@ */
				[MODULE_KEY_TEAMPROFILE, 	"구성원 인사기록", 	"TeamProfile"],		// 팀원 인사기록조회
				[MODULE_KEY_TEAMWORKTIME, 	"구성원 근태", 		"TeamWorkTime"],	// 팀원 근무 조회
				[MODULE_KEY_APPMSS, 		"구성원 평가결과", 	"Appmss"],			//
				[MODULE_KEY_CONTRACT, 		"계약현항", 			"Contract"],		// 계약현황 조회
				[MODULE_KEY_SEARCH, 		"인사검색", 			"Search"],			// 인사검색
				[MODULE_KEY_NOTICE, 		"공지사항", 			"Notice"],			// 공지사항
				[MODULE_KEY_FORMCON, 		"서식/신청서", 		"Formcon"],			// 
				[MODULE_KEY_ALLAPP, 		"전사 인사발령 공지", 	"Allapp"],			//
 				[MODULE_KEY_PAYCON, 		"급여 공지사항", 		"Paycon"],			//
				[MODULE_KEY_APPROVAL, 		"결재함", 			"Approval"],		// 공지사항
				[MODULE_KEY_INREC,		 	"INREC",			"Inrec"],			//사내추천  2012.10.30 j.t 추가
				[MODULE_KEY_MINTVIEW,	 	"구성원 면담기록",		"MintView"],		//구성원 면담기록  2013.05.13 j.t 추가
				[MODULE_KEY_HRLETTER,	 	"HRLETTER",		"Hrletter"],		//Letter nos용
				[MODULE_KEY_TEAMWORKSUM,	"TEAMWORKSUM",		"Teamworksum"]		//구성원  근태 집계표
				 
				/* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */
				];

		public function AppModuleManager(baseUI:ViewStack)
		{
			_baseUI = baseUI;
		}
		
		public static function getModuleManagerGuide(moduleKey:String, type:String="tel"):String
		{
			var module:Object = getModule(moduleKey);
			if(module!=null) {
				var auth:AuthorityVO = module["authority"];
				var strManager:String = "";
				if(Variables.company == "NOS") {
					if( StringUtil.NVL(auth.ENAME) != "") {
						if(type == "tel") {
							//strManager = auth.ENAME + "(" + auth.ORGTX + ")  Tel: "+  auth.TEL_OFFICE + " / Fax : " + auth.FAX;
							strManager = auth.ORGTX + " " + auth.ENAME + " (Tel."+  auth.TEL_OFFICE + ")";
						}
						else {
							strManager = auth.ENAME + "(" + auth.ORGTX + ")  e-mail: "+  auth.EMAIL_IN;
						} 
					}
				}
				else {
					if( StringUtil.NVL(auth.ENAME) != "") {
						if(type == "tel") {
							//strManager = auth.ENAME + "(" + auth.ORGTX + ")  Tel: "+  auth.TEL_OFFICE + " / Fax : " + auth.FAX;
							strManager = auth.ORGTX + " " + auth.ENAME + " 매니저 (Tel."+  auth.TEL_OFFICE + ")";
						}
						else if(type == "name") {
							strManager = auth.ENAME;
						}
						else if(type == "manager"){
							strManager = auth.MANAGER;														
						}
						
						//2013.06.13 SAC 현업요청으로 담당자  사번 하드코딩으로 변경함.						
//						else {
//							strManager = auth.ENAME + "(" + auth.ORGTX + ")  e-mail: "+  auth.EMAIL_IN;
//						} 
						
					}
				}
				return strManager;
			}
			return "module not found";
		}
		
		public static function getModuleManagerMail(moduleKey:String):String
		{
			var module:Object = getModule(moduleKey);
			if(module!=null) {
				var auth:AuthorityVO = module["authority"];
				var strManager:String = "";
				if( StringUtil.NVL(auth.ENAME) != "") {
					return auth.EMAIL_IN;
				}
				return "";
			}
			return "";
		}
		
		/***  0518..................
		 * 
		 * 
		 *  silver : 새로운 모듈 추가시 또는 분리시에는 운영에 즉시적용을 위하여
		 *           운영 parameter로 꼭 구분해야한다.. 
		 * 
		 * 
		 * */
		public static function setModuleUrl(company:String):void
		{
			var module:*;
			if(company=="NOS") {
				for each(module in modules) {
					if(module[0] == MODULE_KEY_BIZTRIP) {
						module[2] = "BizTripNos";
					}
					else if(module[0] == MODULE_KEY_WORK) {
						module[2] = "WorkNos";
					}
					else if(module[0] == MODULE_KEY_APPROVAL) {
						module[2] = "ApprovalNos";
					}
					//silver0321
					else if(module[0] == MODULE_KEY_CONGMONEY) {
						module[2] = "CongMoneyNos";
					}
					else if(module[0] == MODULE_KEY_SCHOOLEXP) {
						module[2] = "SchoolExpNos";
					}

																				
				}
			} 
			//silver0321
			else if(company=="STC"){
				for each(module in modules) {
					if(module[0] == MODULE_KEY_BIZTRIP) {
						module[2] = "BizTrip";
					}					
					else if(module[0] == MODULE_KEY_MYPROFILE) {
						module[2] = "MyProfileStc";
					}
					else if(module[0] == MODULE_KEY_WORK) {
						module[2] = "WorkSac";
					}
					else if(module[0] == MODULE_KEY_APPROVAL) {
						module[2] = "ApprovalSac";
					}
					else if(module[0] == MODULE_KEY_TEAMPROFILE) {
						module[2] = "TeamProfileStc"; 
					}
					//silver0321 TOP 최초 분리 변경함. 
					else if(module[0] == MODULE_KEY_CONGMONEY) {
						module[2] = "CongMoney";
					}					
					else if(module[0] == MODULE_KEY_MEDICALMONEY) {
						module[2] = "MedicalMoney";
					}					
				}				
			}
			else if(company=="SAC") {
				for each(module in modules) {
					if(module[0] == MODULE_KEY_BIZTRIP) {
						
//						if(serverType=='PROD') {
//							module[2] = "BizTrip";
//						} else {
//							module[2] = "BizTripSac";	
//						}
						
						module[2] = "BizTripSac";
						
					}										
					else if(module[0] == MODULE_KEY_MYPROFILE) {
						module[2] = "MyProfileSac";
					}
					else if(module[0] == MODULE_KEY_WORK) {
						module[2] = "WorkSac";
					}
					else if(module[0] == MODULE_KEY_APPROVAL) {
						module[2] = "ApprovalSac";
					}
					else if(module[0] == MODULE_KEY_TEAMPROFILE) {
						module[2] = "TeamProfileSac";
					}
					//silver0321
					else if(module[0] == MODULE_KEY_CONGMONEY) {
						module[2] = "CongMoneySac";
					}
					
					else if(module[0] == MODULE_KEY_MEDICALMONEY) {
						module[2] = "MedicalMoneySac";
					}	
					else if(module[0] == MODULE_KEY_SCHOOLEXP) {
						module[2] = "SchoolExpSac";
					}																			
					/*
					else if(module[0] == MODULE_KEY_TEAMWORKTIME) { 
						module[2] = "TeamWorkTimeSac";
					}
					*/
				}
			}
		}
		private var waitingModule:String = "";
		public function executeModule(moduleID:String):void
		{
			Variables.moduleName = moduleID; 
			trace("executeModule: " + moduleID);
			if(_baseUI.selectedIndex!=0 && moduleID == ContentBase(_baseUI.selectedChild).moduleID) {
				return;
			}
			if(moduleID==MODULE_KEY_MAIN) {
				_baseUI.selectedIndex = 0;	
				Facade.getInstance(moduleID).sendNotification(Messages.ACTIVATE_MODULE);
			}
			else {
				if(moduleMap[moduleID]==null) {
					if(_baseUI.selectedIndex!=0) { 
						ContentBase(_baseUI.selectedChild).contentBox.visible = false;
					}
					var moduleBase:ContentBase = new ContentBase();
					moduleBase.moduleID = moduleID;
					moduleBase.moduleURL = getModuleURL(moduleID);
					waitingModule = moduleID;
					moduleBase.addEventListener(ContentBase.READY_MODULE, onLoadedModule);
					moduleBase.addEventListener(ContentBase.ERROR_MODULE, onErrorModule);
					moduleBase.addEventListener("END_OF_OUTEFFECT", onEndOfOutEffect);
					moduleMap[moduleID] = moduleBase;
					_baseUI.addChild(moduleBase);
					setMenuEvent(moduleBase);
					
				}
				else {
					if(_baseUI.selectedIndex!=0) {
						ContentBase(_baseUI.selectedChild).contentBox.visible = false;
					}
					_baseUI.selectedChild = moduleMap[moduleID];
					ContentBase(_baseUI.selectedChild).contentBox.visible = true;
					Facade.getInstance(moduleID).sendNotification(Messages.ACTIVATE_MODULE);
				}
			}
		}
		
		private var intID:uint;
		private function onLoadedModule(e:Event):void
		{
			_baseUI.selectedChild = moduleMap[waitingModule];
			removeModuleEvent(waitingModule);
			//ContentBase(moduleMap[waitingModule]).contentBox.visible = true;
			waitingModule = "";
			trace("AppModuleManager: onLoadedModule");
		}
		
		private function onEndOfOutEffect(e:Event):void
		{
			
		}
		
		private function onErrorModule(e:Event):void
		{
			_baseUI.selectedIndex = 0;
			_baseUI.removeChild(ContentBase(moduleMap[waitingModule]));
			removeModuleEvent(waitingModule);
			delete moduleMap[waitingModule];
			waitingModule = "";
			CommonAlert.showMessage("HrMain", "Module not found!", null, "TITLE_INFO", null, sendErrorModule);
		}
		
		private function sendErrorModule():void
		{
			dispatchEvent(new Event(ERROR_LOAD_MODULE));
		} 
		private function removeModuleEvent(id:String):void
		{
			ContentBase(moduleMap[id]).removeEventListener(ContentBase.READY_MODULE,onLoadedModule);
			ContentBase(moduleMap[id]).removeEventListener(ContentBase.ERROR_MODULE,onErrorModule);
		}
				
		public static function getModuleURL(id:String):String
		{
			for each(var module:Array in modules)
			{
				if(module[0] == id) {
					return module[2];	// + ".swf";
				}
			}
			return "";
		}

		public static function getModuleID(key:String):String
		{
			for each(var module:Array in modules)
			{
				if(module[0] == key) {
					return module[2];
				}
			}
			return "CommonHr";
		}
		
		public static function getModule(key:String):Object
		{
			for each(var module:Array in modules)
			{
				if(module[0] == key) {
					return module;
				}
			}
			return null;
		}
		

		private function setMenuEvent(target:ContentBase):void
		{
			target.menuBar.addEventListener(SelMenuEvent.SELECTED_MENU, onSelMenu);
			target.menuBar.addEventListener(MenuBar2.EVENT_LOGOUT, onSelLogout);
		}


		private function onSelLogout(event:Event):void
		{
			Facade.getInstance(MODULE_KEY_MAIN).sendNotification(Messages.LOGOUT);
		}


 		/**
		 * MenuBar에서 메뉴를 눌렀을 때 처리
		 * 			- Sub Module이 실행되어 있는 경우 active 되어 있는 서브 모듈에 close 여부를 묻는 메세지를 발송한다.
		 * @param
		 * @return void
		 */
		private function onSelMenu(event:SelMenuEvent):void
		{
			Facade.getInstance(MODULE_KEY_MAIN).sendNotification(Messages.EXECUTE_MODULE, event.menuID);
		}
		
	}
}